package com.stylefeng.guns.rest.modular.auth.util;


import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.jianhua.service.impi.SmsSendMessageServiceImpl;

/**
* @ClassName: TimeLimitUtil
* @Description: 时间限制工具类 TODO(这里用一句话描述这个类的作用)
* @author 柯南
* @date 2018年9月10日
*
*/
public class ReaderRelatedUtil {

	/**
	* @Title: verificationCodeLimitation
	* @Description: 验证，输入的验证码是否在10钟有效期内 TODO(这里用一句话描述这个方法的作用)
	* @param @return    参数
	* @return boolean    返回类型
	* @throws
	*/
	public static boolean verificationCodeLimitation(Long lastSendTime) {
//		当前时间的时间戳
		Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
		Long end;
		end = second - lastSendTime;
		if(end>600) {
			return true;
		}else {
			return false;
		}
	}


	/**
	* @Title: sendPhoneCode
	* @Description: 发送验证码 TODO(这里用一句话描述这个方法的作用)
	* @param @param account
	* @param @return    参数
	* @return JSONObject    返回类型
	* @throws
	*/
	public static int sendPhoneCode(String account) {
		SmsSendMessageServiceImpl smsSendMessageServiceImpl = new SmsSendMessageServiceImpl();
		int code = smsSendMessageServiceImpl.sendCommonMessage(account);
		return code;
	}


    /**
    * @Title: isPhone
    * @Description: 校验手机号 TODO(这里用一句话描述这个方法的作用)
    * @param @param account
    * @param @return    参数
    * @return boolean    返回类型
    * @throws
    */
    public static boolean isPhone(String account) {
    	String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
    	Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(account);
		return m.matches();
    }


    /**
    * @Title: codeIsEffective
    * @Description: 验证输入的验证码是否在有效期内，并正确 TODO(这里用一句话描述这个方法的作用)
    * @param @param usercode 用户输入的验证码
    * @param @param code 正确的验证码
    * @param @param lastSendTime 验证码发送时间
    * @param @return    参数
    * @return boolean    返回类型
    * @throws
    */
    public static boolean codeIsEffective(int usercode, int code,Long lastSendTime) {
    	boolean end;
    	boolean b = ReaderRelatedUtil.verificationCodeLimitation(lastSendTime);
//    	判断是否在10分钟内
    	if(!b) {
//    		在10分钟内
    		if(usercode == code) {
    			end = true;
    		}else {
    			end = false;
    		}
    	}else {
    		end = false;
    	}
		return end;
    }

}
